CSS containment ์์ฑ(layout, paint, size, style, strict, content)์ ์ฌ์ธต ๋ถ์ํ๊ณ , ์ด๋ฅผ ์กฐํฉํ์ฌ ์น ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์. ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ธ๋ก๋ฒ ๊ฐ์ด๋์ ๋๋ค.
์น ์ฑ๋ฅ ๊ทน๋ํ: CSS Containment ๋ค์ค ์ ํ ์ ๋ต ๋ง์คํฐํ๊ธฐ
์ค๋๋ ๊ณผ ๊ฐ์ด ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ํ๊ฒฝ์์ ์น ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ ์์ ์ ๊ธฐ๊ธฐ, ๋คํธ์ํฌ ์ํ, ์ง๋ฆฌ์ ์์น์ ๊ด๊ณ์์ด ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅธ ๊ฒฝํ์ ๊ธฐ๋ํฉ๋๋ค. ๋๋ฆฐ ์น์ฌ์ดํธ๋ ๋จ์ํ ์ฌ์ฉ์๋ฅผ ์ข์ ์ํค๋ ๊ฒ์ ๋์ด ์ ํ์จ, ๊ฒ์ ์์ง ์์, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก๋ ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ํ๊ฐ ์ข
์ข
์ฃผ๋ชฉ์ ๋ฐ์ง๋ง, CSS ์ญ์ ํ์ด์ง๊ฐ ์ผ๋ง๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฝ๊ฒ ๋ ๋๋ง๋๋์ง์ ๋๊ฐ์ด ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ฑ๋ฅ ํฅ์์ ์ํด ๊ฐ์ฅ ๊ฐ๋ ฅํ๋ฉด์๋ ์ข
์ข
์ถฉ๋ถํ ํ์ฉ๋์ง ์๋ CSS ์์ฑ ์ค ํ๋๊ฐ contain์
๋๋ค.
contain ์์ฑ์ ๋ค์ํ ์ ํ ๋ฐ ์ ๋ต์ ์กฐํฉ๊ณผ ํจ๊ป, UI์ ํน์ ๋ถ๋ถ์ด ๊ฒฉ๋ฆฌ๋ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฆฌ๋ ์ ๊ตํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ CSS Containment ๋ค์ค ์ ํ ์ ๋ต์ ์ดํดํ๊ณ ์ ์ฉํจ์ผ๋ก์จ ๋ธ๋ผ์ฐ์ ์ ์์
๋ถํ๋ฅผ ํฌ๊ฒ ์ค์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๋์ด๊ณ , ์คํฌ๋กค์ ๋ ๋ถ๋๋ฝ๊ฒ ๋ง๋ค๋ฉฐ, ๋ ๋ฐ์์ ์ธ ์ํธ์์ฉ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ์ข
ํฉ ๊ฐ์ด๋๋ ๊ฐ ๊ฒฉ๋ฆฌ ์ ํ์ ์ฌ์ธต์ ์ผ๋ก ์ดํด๋ณด๊ณ , ๊ฐ๋ณ์ ์ธ ๊ฐ์ ์ ํ๊ตฌํ๋ฉฐ, ๊ฐ์ฅ ์ค์ํ๊ฒ๋ ์ด๋ค์ ๊ฒฐํฉํ์ฌ ๋ค์ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ ํ ์ ์ฌ๋ ฅ์ ๊ทน๋ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค ๊ฒ์
๋๋ค.
์กฐ์ฉํ ์ฑ๋ฅ ์ ํ์ ์ฃผ๋ฒ: ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๋น์ฉ
contain์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์, ์ด ์์ฑ์ด ํด๊ฒฐํ๊ณ ์ ํ๋ ๊ณผ์ ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์น ํ์ด์ง๋ฅผ ๋ ๋๋งํ ๋, '์ค์ ๋ ๋๋ง ๊ฒฝ๋ก(critical rendering path)'๋ก ์๋ ค์ง ๋ณต์กํ ๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค. ์ด ๊ฒฝ๋ก๋ ๋ค์์ ํฌํจํฉ๋๋ค:
- ๋ ์ด์์ (๋ฆฌํ๋ก์ฐ): ํ์ด์ง์ ๋ชจ๋ ์์์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)์ด๋ CSS ์์ฑ์ ๋ณ๊ฒฝ์ ์ข ์ข ์ ์ฒด ๋ฌธ์ ๋๋ ์๋น ๋ถ๋ถ์ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ ๋ฐํฉ๋๋ค.
- ํ์ธํธ: ๊ฐ ์์์ ํฝ์ ์ ์ฑ์๋๋ค โ ํ ์คํธ, ์์, ์ด๋ฏธ์ง, ํ ๋๋ฆฌ, ๊ทธ๋ฆผ์๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
- ํฉ์ฑ (Compositing): ํ์ด์ง์ ๊ฐ ๋ถ๋ถ์ ๋ ์ด์ด๋ก ๊ทธ๋ฆฐ ๋ค์, ์ด ๋ ์ด์ด๋ค์ ๊ฒฐํฉํ์ฌ ํ๋ฉด์ ๋ํ๋๋ ์ต์ข ์ด๋ฏธ์ง๋ฅผ ๋ง๋ญ๋๋ค.
์ด๋ฌํ ๊ฐ ๋จ๊ณ๋ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค. ์ํธ์์ฉํ๋ ๊ตฌ์ฑ ์์๊ฐ ๋ง์ ํฌ๊ณ ๋ณต์กํ ์นํ์ด์ง๋ฅผ ์์ํด ๋ณด์ญ์์ค. DOM์ ํ ๋ถ๋ถ์์ ์์ ๋ณ๊ฒฝ(์: ๋ชฉ๋ก์ ์ ํญ๋ชฉ ์ถ๊ฐ ๋๋ ์์ ์ ๋๋ฉ์ด์ )์ด ๋ฐ์ํ๋ฉด ์ ์ฒด ๋ฌธ์ ํธ๋ฆฌ์ ๋ํ ๋ ์ด์์, ํ์ธํธ, ํฉ์ฑ์ ์์ ํ ์ฌ๊ณ์ฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ข ์ข ๋์ ๋ณด์ด์ง ์๋ ์ด ํ๊ธ ํจ๊ณผ๋ ํนํ ์ฑ๋ฅ์ด ๋ฎ์ ๊ธฐ๊ธฐ๋ ์ ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์์ ํํ ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ ํ๊ฒฝ์์ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ(jank)๊ณผ ์ฑ๋ฅ ์ ํ์ ์ฃผ์ ์์ธ์ด ๋ฉ๋๋ค.
contain ์์ฑ์ ์ด๋ฌํ ํ๊ธ ํจ๊ณผ๋ฅผ ์ฐจ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํน์ ์์์ ๊ทธ ์์๋ค์ด ํ์ด์ง์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ๊ฑฐ์ ๋
๋ฆฝ์ ์ด๋ผ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ์ ๋ช
์์ ์ผ๋ก ์๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ '๊ฒฉ๋ฆฌ'๋ ๋ธ๋ผ์ฐ์ ์ ์ค์ํ ํํธ๋ฅผ ์ ๊ณตํ์ฌ, ์ ์ฒด ํ์ด์ง๋ฅผ ์ค์บํ๋ ๋์ DOM์ ํน์ ํ์ ํธ๋ฆฌ์ ๊ณ์ฐ์ ํ์ ํจ์ผ๋ก์จ ๋ ๋๋ง ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ง์น ์นํ์ด์ง์ ํน์ ์์ญ ์ฃผ์์ ์ธํ๋ฆฌ๋ฅผ ์น๊ณ ๋ธ๋ผ์ฐ์ ์๊ฒ "์ด ์ธํ๋ฆฌ ์์์ ์ผ์ด๋๋ ์ผ์ ์ด ์์๋ง ๋จธ๋ฌธ๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
CSS contain ์์ฑ ํด๋ถ: ๊ฐ๋ณ ๊ฒฉ๋ฆฌ ์ ํ
contain ์์ฑ์ ์ฌ๋ฌ ๊ฐ์ ํ์ฉํ๋ฉฐ, ๊ฐ ๊ฐ์ ๋ค๋ฅธ ์์ค ๋๋ ์ ํ์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๊ฐ๋ณ ์ ํ์ ์ดํดํ๋ ๊ฒ์ด ๊ฒฐํฉ ์ ๋ต์ ๋ง์คํฐํ๋ ๊ธฐ์ด์
๋๋ค.
1. contain: layout;
layout ๊ฐ์ ์์์ ๋ด๋ถ ๋ ์ด์์์ด ์์ ์ธ๋ถ์ ์ด๋ค ๊ฒ์ ๋ ์ด์์์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํฉ๋๋ค. ๋ฐ๋๋ก, ์์ ์ธ๋ถ์ ์ด๋ค ๊ฒ๋ ๊ทธ ๋ด๋ถ ๋ ์ด์์์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์ด๋ ๋ ์ด์์ ๊ณ์ฐ์ ์ํ ๊ฐ๋ ฅํ ๊ฒฝ๊ณ๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ๋ง์ฝ contain: layout;์ด ์ ์ฉ๋ ์์์ ๋ด๋ถ ์ฝํ
์ธ ๋ ์คํ์ผ์ด ๋ณ๊ฒฝ๋์ด ์ผ๋ฐ์ ์ผ๋ก ์กฐ์์ด๋ ํ์ ์์์ ๋ฆฌํ๋ก์ฐ๋ฅผ ์ ๋ฐํ๋๋ผ๋, ํด๋น ์ธ๋ถ ์์๋ค์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
- ์ฅ์ : ๋ธ๋ผ์ฐ์ ๋ ๊ฒฉ๋ฆฌ๋ ์์์ ๊ทธ ์์๋ค์ ๋ ์ด์์๋ง ์ฌํ๊ฐํ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์์ ๊ณ์ฐ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ด๋ ํฌ๊ธฐ๋ ์ฝํ ์ธ ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์์์ ํนํ ํจ๊ณผ์ ์ ๋๋ค.
- ์ฌ์ฉ ์๊ธฐ: ์์ ฏ, ์นด๋ ๋ ์ด์์ ๋๋ ๊ฐ์ ๋ชฉ๋ก์ ํญ๋ชฉ๊ณผ ๊ฐ์ด ๊ฐ ํญ๋ชฉ์ ๋ด๋ถ ๋ณ๊ฒฝ์ด ์ ์ญ์ ์ธ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ ๋ฐํด์๋ ์ ๋๋ ๋
๋ฆฝ์ ์ธ UI ์ปดํฌ๋ํธ์ ์ด์์ ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ํ ์นด๋ ์ปดํฌ๋ํธ์
contain: layout;์ ์ฌ์ฉํ๋ฉด '์ธ์ผ' ๋ฐฐ์ง๋ ์ ๋ฐ์ดํธ๋ ๊ฐ๊ฒฉ๊ณผ ๊ฐ์ ๋์ ์ฝํ ์ธ ๊ฐ ์ฃผ๋ณ ์ ํ ๊ทธ๋ฆฌ๋์ ์ฌ๊ณ์ฐ์ ๊ฐ์ ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. - ์์ ์๋๋ฆฌ์ค: ๋ฉ์์ง ์คํธ๋ฆผ์ ํ์ํ๋ ์ฑํ
์ ํ๋ฆฌ์ผ์ด์
. ๊ฐ ๋ฉ์์ง ๋งํ์ ์ ๋์ ์ฝํ
์ธ (์ด๋ฏธ์ง, ์ด๋ชจํฐ์ฝ, ๋ค์ํ ํ
์คํธ ๊ธธ์ด)๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง ์์์
contain: layout;์ ์ ์ฉํ๋ฉด ์ ๋ฉ์์ง๊ฐ ๋์ฐฉํ๊ฑฐ๋ ๊ธฐ์กด ๋ฉ์์ง๊ฐ ํ์ฅ๋ ๋ ์ ์ฒด ์ฑํ ๊ธฐ๋ก์ด ์๋ ํด๋น ํน์ ๋ฉ์์ง์ ๋ ์ด์์๋ง ์ฌ๊ณ์ฐ๋ฉ๋๋ค. - ์ ์ฌ์ ๋ฌธ์ ์ : ์์์ ํฌ๊ธฐ๊ฐ ์ฝํ
์ธ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ฐ ํฌ๊ธฐ๋ ํจ๊ป ๊ฒฉ๋ฆฌํ์ง ์์ผ๋ฉด, ์์๊ฐ ์๊ฐ์ ์ผ๋ก ๊ณต๊ฐ์ ๋ฒ์ด๋๊ฑฐ๋ ์ด๊ธฐ ๋ ์ด์์์ด ์๋ชป๋๋ ๋ฑ์ ์๊ธฐ์น ์์ ์๊ฐ์ ๊ฒฐํจ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ๋๋ฌธ์ ์ข
์ข
contain: size;์ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
2. contain: paint;
paint ๊ฐ์ ์์ ๋ด๋ถ์ ์ด๋ค ๊ฒ๋ ๊ทธ ๊ฒฝ๊ณ ๋ฐ์ผ๋ก ๊ทธ๋ ค์ง์ง ์์ ๊ฒ์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฆฝ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์์ ํจ๋ฉ ์์๋ฅผ ๋ฒ์ด๋๋ ๋ชจ๋ ์ฝํ
์ธ ๋ฅผ ์์ ํ๊ฒ ์๋ผ๋ผ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ ์ค์ํ ๊ฒ์, ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฒฉ๋ฆฌ๋ ์์์ ์ฝํ
์ธ ๊ฐ ์กฐ์์ด๋ ํ์ ์์์ ํ์ธํ
์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๊ณ ๊ฐ์ ํ์ฌ ํ์ธํ
์ ์ต์ ํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์์๊ฐ ํ๋ฉด ๋ฐ์ ์์ ๋, ๋ธ๋ผ์ฐ์ ๋ ํด๋น ์์์ ํ์ธํ
์ ์์ ํ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
- ์ฅ์ : ํ์ธํ
์์ญ์ ์ ํํ์ฌ ํ์ธํธ ์๊ฐ์ ์ค์
๋๋ค. ๊ฒฐ์ ์ ์ผ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด ๋ฐ ์์๋ค์ ์กฐ๊ธฐ์ ์ปฌ๋ง(culling)ํ ์ ์๊ฒ ํฉ๋๋ค.
contain: paint;๊ฐ ์ ์ฉ๋ ์์๊ฐ ๋ทฐํฌํธ ๋ฐ์ผ๋ก ์ด๋ํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๊ทธ ์ฝํ ์ธ ๋ฅผ ๊ทธ๋ฆด ํ์๊ฐ ์๋ค๋ ๊ฒ์ ์๋๋ค. ์ด๋ ์คํฌ๋กค ๊ฐ๋ฅํ ์์ญ์ด๋ ํญ ์ธํฐํ์ด์ค ๋ด์์ DOM์๋ ์กด์ฌํ์ง๋ง ํ์ฌ ๋ณด์ด์ง ์๋ ๋ง์ ์ปดํฌ๋ํธ๋ค์๊ฒ ์์ฒญ๋ ์ด์ ์ ๋๋ค. - ์ฌ์ฉ ์๊ธฐ: ์์ฃผ ์คํฌ๋กค๋์ด ํ๋ฉด ์ํ์ผ๋ก ๋๋๋๋ ์์, ํญ ํจ๋์ ์์(๋นํ์ฑ ํญ), ๋๋ ํ๋ฉด ๋ฐ ๋ด๋น๊ฒ์ด์
๋ฉ๋ด์ ์๋ฒฝํฉ๋๋ค. ๋ง์ ์ฐจํธ์ ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํฌํจํ๋ ๋ณต์กํ ๋์๋ณด๋๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ๊ฐ ์์ ฏ์
contain: paint;๋ฅผ ์ ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํนํ ํ์ฌ ๋ทฐ ๋ฐ์ ์์ ๋ ์ด๋ค์ ๋ ๋๋ง์ ์ต์ ํํ ์ ์์ต๋๋ค. - ์์ ์๋๋ฆฌ์ค: ์๋ง์ ์ฌ๋ผ์ด๋๋ฅผ ๊ฐ์ง ์บ๋ฌ์
์ปดํฌ๋ํธ. ํ ๋ฒ์ ํ๋์ ์ฌ๋ผ์ด๋๋ง ๋ณด์
๋๋ค. ๊ฐ ์ฌ๋ผ์ด๋(ํ์ฑ ์ฌ๋ผ์ด๋ ์ ์ธ)์
contain: paint;๋ฅผ ์ ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด์ด์ง ์๋ ์ฌ๋ผ์ด๋๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ ํผํ ์ ์์ด ๋ ๋๋ง ์ค๋ฒํค๋๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. - ์ ์ฌ์ ๋ฌธ์ ์ : ์์์ ์๊ฐ์ ์์๋ฅผ ๋ฒ์ด๋๋ ๋ชจ๋ ์ฝํ
์ธ ๋ ์๋ฆฝ๋๋ค. ์ด๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด ๋ฐ๋์งํ์ง ์์ ์๊ฐ์ ์๋ฆผ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์์์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํ๊ฑฐ๋, ์ฝํ
์ธ ๊ฐ ๊ฒฉ๋ฆฌ๋ ์์ ๋ด์์ ์คํฌ๋กค๋๋๋ก ํ๋ ค๋ฉด
overflow: auto;๋ฅผ ์ฌ์ฉํ์ญ์์ค.
3. contain: size;
size ๊ฐ์ ์์์ ํฌ๊ธฐ๊ฐ ์ฝํ
์ธ ์ ๋
๋ฆฝ์ ์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์๊ฐ ๊ณ ์ ๋ ํฌ๊ธฐ(CSS์ width/height/min-height๋ก ๋ช
์์ ์ผ๋ก ์ ์๋๊ฑฐ๋, ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ ๊ณ ์ ํฌ๊ธฐ ๋ฑ)๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ , ์์ ์์์ ๋ฐ๋ผ ํฌ๊ธฐ๋ฅผ ์ฌํ๊ฐํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ layout ๊ฒฉ๋ฆฌ์ ๊ฒฐํฉ๋ ๋ ์์ฒญ๋๊ฒ ๊ฐ๋ ฅํฉ๋๋ค.
- ์ฅ์ : ์์์ ์ฝํ ์ธ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ํฌ๊ธฐ์ ์ํฅ์ ์ฃผ์ด ๋ฐ์ํ ์ ์๋ ์ ์ญ์ ์ธ ๋ ์ด์์ ์ด๋์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ๋ง์ ์์๊ฐ ์๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ์์๋ฅผ ๊ฒ์ฌํ์ง ์๊ณ ๋ ๊ฒฝ๊ณ ์์๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ ์ ์๋ ์๋๋ฆฌ์ค์์ ํนํ ํจ๊ณผ์ ์ ๋๋ค. ๊ฒฉ๋ฆฌ๋ ์์์ ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์กฐ์ ๋ฐ ํ์ ์์๊ฐ ๋ฆฌํ๋ก์ฐ๋ ํ์๊ฐ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฌ์ฉ ์๊ธฐ: ํฌ๊ธฐ๋ฅผ ์๊ฑฐ๋ ๋ช
์์ ์ผ๋ก ์ ์๋ ์ปดํฌ๋ํธ์ ํ์์ ์
๋๋ค. ๊ณ ์ ํฌ๊ธฐ์ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ, ๋น๋์ค ํ๋ ์ด์ด ๋๋ ๊ฐ ๊ทธ๋ฆฌ๋ ์์ดํ
์ด ์ ์๋ ์์ญ์ ๊ฐ๋ ๊ทธ๋ฆฌ๋ ์์คํ
๋ด์ ์ปดํฌ๋ํธ๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ์๋ฅผ ๋ค์ด, ํ์๋๋ ๋๊ธ์ด๋ '์ข์์' ์์ ๊ด๊ณ์์ด ๊ฐ ๊ฒ์๋ฌผ์ ๋์ด๊ฐ ๊ณ ์ ๋ ์์
๋ฏธ๋์ด ํผ๋๋
contain: size;๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. - ์์ ์๋๋ฆฌ์ค: ๊ฐ ํญ๋ชฉ์ ํ๋ ์ด์คํ๋ ์ด๋ฏธ์ง์ ๊ณ ์ ๋ ํ ์คํธ ์์ญ์ด ์๋ ์ ํ ๋ชฉ๋ก. ์ด๋ฏธ์ง๊ฐ ๋๋ฆฌ๊ฒ ๋ก๋๋๊ฑฐ๋ ํ ์คํธ๊ฐ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋๋ผ๋ ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ํญ๋ชฉ์ ํฌ๊ธฐ๋ฅผ ์์๋ก ์ทจ๊ธํ์ฌ ์ ์ฒด ๋ชฉ๋ก์ ๋ํ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ ์ฌ์ ๋ฌธ์ ์ : ์ฝํ
์ธ ๊ฐ ์ค์ ๋ก ๋ถ๋ชจ์ ํฌ๊ธฐ์ ์ํฅ์ ์ฃผ์ด์ผ ํ๊ฑฐ๋ ์์์ ํฌ๊ธฐ๊ฐ ๋ช
์์ ์ผ๋ก ์ ์๋์ง ์์ ๊ฒฝ์ฐ,
contain: size;๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝํ ์ธ ๊ฐ ๋์น๊ฑฐ๋ ๋ ๋๋ง์ด ์๋ชป๋ ์ ์์ต๋๋ค. ์์๊ฐ ์์ ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ก ํด์ผ ํฉ๋๋ค.
4. contain: style;
style ๊ฐ์ ์์์ ํ์ ํธ๋ฆฌ ๋ด์ ์คํ์ผ ๋ณ๊ฒฝ์ด ํด๋น ํ์ ํธ๋ฆฌ ์ธ๋ถ์ ์ด๋ค ๊ฒ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํฉ๋๋ค. ์ด๋ ๋ ํน์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋์ง๋ง, ํนํ ๋งค์ฐ ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ ํ ๊ฐ์น ์๋ ๊ฒฉ๋ฆฌ ์ ํ์
๋๋ค. ์ด๋ CSS ์นด์ดํฐ๋ ํน์ ์ฌ์ฉ์ ์ ์ ์์ฑ๊ณผ ๊ฐ์ด ์กฐ์ ์คํ์ผ์ ์ํฅ์ ์ค ์ ์๋ ์์ฑ๋ค์ด ๊ฒฉ๋ฆฌ๋ ์์๋ฅผ ๋ฒ์ด๋์ง ์์์ ์๋ฏธํฉ๋๋ค.
- ์ฅ์ : ์คํ์ผ ์ฌ๊ณ์ฐ์ ๋ฒ์๋ฅผ ์ค์
๋๋ค.
style๋จ๋ ์ผ๋ก ์๋นํ ์ฑ๋ฅ ํฅ์์ ๋ณด๊ธฐ๋ ๋๋ฌผ์ง๋ง, ๋ณต์กํ CSS ์ํคํ ์ฒ์์ ์ ๋ฐ์ ์ธ ์์ ์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๊ธฐ์ฌํฉ๋๋ค. ์ปดํฌ๋ํธ ๋ด์ ์ ์๋ ์ฌ์ฉ์ ์ ์ ์์ฑ๊ณผ ๊ฐ์ ์คํ์ผ์ด ์๋์น ์๊ฒ "๋์ถ"๋์ด ํ์ด์ง์ ๊ด๋ จ ์๋ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. - ์ฌ์ฉ ์๊ธฐ: ์ปดํฌ๋ํธ ๋ด์์ ์ฌ์ฉ์ ์ ์ ์์ฑ(CSS ๋ณ์)์ด๋ CSS ์นด์ดํฐ์ ๊ฐ์ ๋ณต์กํ CSS ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ๊ทธ ๋ฒ์๋ฅผ ์๊ฒฉํ๊ฒ ๋ก์ปฌ๋ก ์ ํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ฌ ํ์ด ๊ฐ๋ฐํ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐฉ์ด์ ์ธ ์กฐ์น๊ฐ ๋ ์ ์์ต๋๋ค.
- ์์ ์๋๋ฆฌ์ค: ๋ด๋ถ ํ
๋ง ์ค์ ์ CSS ๋ณ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๋์์ธ ์์คํ
์ปดํฌ๋ํธ. ์ด ์ปดํฌ๋ํธ์
contain: style;์ ์ ์ฉํ๋ฉด ์ด๋ฌํ ๋ด๋ถ ๋ณ์๊ฐ ํ์ด์ง์ ๋ค๋ฅธ ๊ณณ์ ์ ์๋ ๋ณ์๋ ์คํ์ผ์ ์๋์น ์๊ฒ ๋ฐฉํดํ์ง ์๋๋ก ํ์ฌ ๋ชจ๋์ฑ์ ์ฆ์งํ๊ณ ์๋ํ์ง ์์ ์ ์ญ ์คํ์ผ ๋ณ๊ฒฝ์ ๋ฐฉ์งํฉ๋๋ค. - ์ ์ฌ์ ๋ฌธ์ ์ : ์ด ๊ฐ์
layout์ด๋size์ ๋นํด ์๊ฐ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ ์ ์ง๋ง, ํน์ CSS ์์ฑ(์: ์์์ ์ผ๋ก ์กฐ์์ ์ ์ฉ๋๊ฑฐ๋ ์๊ธฐ์น ์์ ๋ฐฉ์์ผ๋ก ์์๋ ๊ฐ์ ์ํฅ์ ๋ฏธ์น๋ ์์ฑ)์ด ์ ํ๋ ๊ฒ์ด๋ผ๋ ์ ์ ์ธ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
5. ๋จ์ถ ์์ฑ: contain: strict; ๋ฐ contain: content;
์ฌ๋ฌ ๊ฒฉ๋ฆฌ ์ ํ์ ์ ์ฉ์ ๋จ์ํํ๊ธฐ ์ํด CSS๋ ๋ ๊ฐ์ง ๋จ์ถ ๊ฐ์ ์ ๊ณตํฉ๋๋ค:
contain: strict;
์ด๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํํ์ ๊ฒฉ๋ฆฌ๋ก, contain: layout paint size style;๊ณผ ๋์ผํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ํด๋น ์์๊ฐ ๋ ์ด์์, ํ์ธํธ, ํฌ๊ธฐ, ์คํ์ผ ์ธก๋ฉด์์ ์์ ํ ๋
๋ฆฝ์ ์์ ์๋ฆฝ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฌํ ์์๋ฅผ ์์ ํ ๋
๋ฆฝ์ ์ธ ๋จ์๋ก ์ทจ๊ธํ ์ ์์ต๋๋ค.
- ์ฅ์ : ์ต๋์ ์ฑ๋ฅ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ง์ ์ผ๋ก ๋ ๋ฆฝ์ ์ด๋ฉฐ ๋ ๋๋ง ์๋ช ์ฃผ๊ธฐ๊ฐ ๋ฌธ์์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์์ ํ ๋ ๋ฆฝ์ ์ธ ์์์ ์ด์์ ์ ๋๋ค.
- ์ฌ์ฉ ์๊ธฐ: ๊ทน๋์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํฌ๊ธฐ๊ฐ ๋ช
์์ ์ผ๋ก ์๋ ค์ ธ ์๊ณ ์ฝํ
์ธ ๊ฐ ์ ๋๋ก ๋ถ๋ชจ/ํ์ ์์์ ๋ ์ด์์/ํฌ๊ธฐ์ ์ํฅ์ ์ฃผ๊ฑฐ๋ ๋์น์ง ์์ ์ปดํฌ๋ํธ์๋ง
contain: strict;๋ฅผ ์ ์ฉํ์ญ์์ค. ์๋ก๋ ๊ณ ์ ํฌ๊ธฐ์ ํ์ ๋ชจ๋ฌ, ๋น๋์ค ํ๋ ์ด์ด ๋๋ ๋ช ์์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์ง์ ๋๊ณ ๋ ๋ฆฝ์ ์ธ ์์ ฏ์ด ์์ต๋๋ค. - ์ ์ฌ์ ๋ฌธ์ ์ : ๊ฐ๋ ฅํ ์ฑ๊ฒฉ ๋๋ฌธ์, ๊ฒฉ๋ฆฌ๋ ์์๊ฐ ์ปค์ ธ์ผ ํ๊ฑฐ๋, ์ฃผ๋ณ์ ์ํฅ์ ๋ฏธ์น๊ฑฐ๋, ์ฝํ ์ธ ๊ฐ ๋์น ๊ฒฝ์ฐ ํ์ด์ง๋ฅผ ์๊ฐ์ ์ผ๋ก ๊นจ๋จ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๊ตฌ ์ฌํญ์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ์ฝํ ์ธ ๊ฐ ์๋ฆฌ๊ฑฐ๋ ํฌ๊ธฐ๊ฐ ์๋ชป๋ ์ ์์ต๋๋ค. ์์์ ๋์์ ๋ํ ์ฒ ์ ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
contain: content;
์ด๋ ์ฝ๊ฐ ๋ ๊ฐ๋ ฅํ ๋จ์ถ ์์ฑ์ผ๋ก, contain: layout paint style;๊ณผ ๋์ผํฉ๋๋ค. ๋์ ๋๊ฒ size ๊ฒฉ๋ฆฌ๋ฅผ ์๋ตํฉ๋๋ค. ์ด๋ ์์์ ํฌ๊ธฐ๋ ์ฌ์ ํ ์ฝํ
์ธ ์ ์ํฅ์ ๋ฐ์ ์ ์์ง๋ง, ๋ ์ด์์, ํ์ธํธ, ์คํ์ผ ๊ณ์ฐ์ ๊ฒฉ๋ฆฌ๋จ์ ์๋ฏธํฉ๋๋ค.
- ์ฅ์ : ์ฑ๋ฅ ์ต์ ํ์ ์ ์ฐ์ฑ ์ฌ์ด์ ์ข์ ๊ท ํ์ ์ ๊ณตํฉ๋๋ค. ๋ด๋ถ ์ฝํ ์ธ ์ ํฌ๊ธฐ๋ ๋ค์ํ ์ ์์ง๋ง ๋ ์ด์์, ํ์ธํธ, ์คํ์ผ ํจ๊ณผ๋ ๋ฌธ์์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ๊ฒฉ๋ฆฌํ๊ณ ์ถ์ ์์์ ์ ํฉํฉ๋๋ค.
- ์ฌ์ฉ ์๊ธฐ: ํ ์คํธ ๋ธ๋ก, ๊ธฐ์ฌ ์ค๋ํซ ๋๋ ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ ๋ธ๋ก๊ณผ ๊ฐ์ด ์ฝํ ์ธ ์ ๋ฐ๋ผ ๋์ด๊ฐ ๋ณ๋๋ ์ ์์ง๋ง ๋ค๋ฅธ ๋ ๋๋ง ๋น์ฉ์ ๊ฒฉ๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์คํธ ๊ธธ์ด๋ ๋ค์ํ์ง๋ง ๋ ์ด์์๊ณผ ํ์ธํ ์ด ๋ค๋ฅธ ์นด๋์ ๋ ๋๋ง์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ทธ๋ฆฌ๋ ๋ด์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์นด๋์ ๋๋ค.
- ์ ์ฌ์ ๋ฌธ์ ์ :
strict๋ณด๋ค ๊ด๋ํ์ง๋ง, ์์์ ์ฝํ ์ธ ๊ฐ ์ฌ์ ํ ํฌ๊ธฐ์ ์ํฅ์ ์ค ์ ์์ผ๋ฉฐ, ๋ง์ฝ ๋ถ๋ชจ ์์๋ ์ ์คํ๊ฒ ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด ์ธ๋ถ ๋ ์ด์์ ๊ณ์ฐ์ ์ ๋ฐํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
๊ฒฐํฉ ๊ฒฉ๋ฆฌ ์ ๋ต: ์๋์ง์ ํ
CSS ๊ฒฉ๋ฆฌ์ ์ง์ ํ ํ์ ํน์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ํ ์ ํ์ ์ ๋ต์ ์ผ๋ก ๊ฒฐํฉํ ๋ ๋ํ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์์ฑ๊ณผ ํจ์จ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ด๊ณ ํจ๊ณผ์ ์ธ ๋ค์ค ์ ํ ์ ๋ต์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ๋ต 1: ๊ฐ์ ๋ชฉ๋ก ๋ฐ ๋ฌดํ ์คํฌ๋กค (contain: layout size paint;)
์น์์ ๊ฐ์ฅ ํํ ์ฑ๋ฅ ๋ฌธ์ ์ค ํ๋๋ ์์ ๋ฏธ๋์ด ํผ๋, ๋ฐ์ดํฐ ํ ์ด๋ธ ๋๋ ์ ํ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๊ธด ํญ๋ชฉ ๋ชฉ๋ก์ ํ์ํ๋ ๊ฒ์ ๋๋ค. ์์ฒ ๊ฐ์ DOM ๋ ธ๋๋ฅผ ๋ ๋๋งํ๋ฉด ์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋ ์ ์์ต๋๋ค. ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํ๋ ๊ฐ์ํ ๊ธฐ์ ์ด ์ธ๊ธฐ ์๋ ํด๊ฒฐ์ฑ ์ ๋๋ค. CSS ๊ฒฉ๋ฆฌ๋ ์ด๋ฅผ ๋์ฑ ๊ฐํํฉ๋๋ค.
- ๋ฌธ์ ์ : ๊ฒฉ๋ฆฌ ์์ด๋ ํญ๋ชฉ์ ์ถ๊ฐ/์ ๊ฑฐํ๊ฑฐ๋ ํญ๋ชฉ ๋ด์ ๋์ ๋ณ๊ฒฝ์ด ์ ์ฒด ๋ชฉ๋ก๊ณผ ๊ทธ ์ฃผ๋ณ์ ๋๊ท๋ชจ ๋ฆฌ๋ ์ด์์๊ณผ ๋ฆฌํ์ธํธ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ํด๊ฒฐ์ฑ
: ๊ฐ ๊ฐ๋ณ ๋ชฉ๋ก ํญ๋ชฉ์
contain: layout size paint;๋ฅผ ์ ์ฉํฉ๋๋ค. ํญ๋ชฉ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๋ ค์ง ๊ฒฝ์ฐcontain: strict;๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. - ์๋ ์๋ฆฌ:
contain: layout;: ๋ด๋ถ ๋ณ๊ฒฝ(์: ์ฌ์ฉ์ ์ํ ์ ๋ฐ์ดํธ, ํญ๋ชฉ ๋ด ์ด๋ฏธ์ง ๋ก๋ฉ)์ด ๋ค๋ฅธ ๋ชฉ๋ก ํญ๋ชฉ์ด๋ ๋ถ๋ชจ ์ปจํ ์ด๋์ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ ๋ฐํ์ง ์๋๋ก ํฉ๋๋ค.contain: size;: ๊ฐ ๋ชฉ๋ก ํญ๋ชฉ์ด ๊ณ ์ ๋๊ณ ์์ธก ๊ฐ๋ฅํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์์ ๋ธ๋ผ์ฐ์ ์ ๊ฒฐ์ ์ ์ผ๋ก ์๋ฆฝ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ ํญ๋ชฉ์ ์ฝํ ์ธ ๋ฅผ ๊ฒ์ฌํ ํ์ ์์ด ์คํฌ๋กค ์์น์ ํญ๋ชฉ์ ๊ฐ์์ฑ์ ์ ํํ๊ฒ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ์ํ ๋ก์ง์ด ํจ์จ์ ์ผ๋ก ์๋ํ๋ ๋ฐ ๊ธฐ๋ณธ์ด ๋ฉ๋๋ค.contain: paint;: ๋ธ๋ผ์ฐ์ ๊ฐ ์คํฌ๋กค๋์ด ๋ณด์ด์ง ์๋ ํญ๋ชฉ์ ํ์ธํ ์ ์์ ํ ๊ฑด๋๋ธ ์ ์๊ฒ ํ์ฌ ํ์ธํธ ์์ ๋ถํ๋ฅผ ๊ทน์ ์ผ๋ก ์ค์ ๋๋ค.
- ์ค์ฉ์ ์์: ์๋ฐฑ ๊ฐ ํ์ฌ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ํ๋ ์ฃผ์ ์์ฅ ํฐ์ปค๋ฅผ ์์ํด ๋ณด์ญ์์ค. ๊ฐ ํ(ํ์ฌ๋ฅผ ๋ํ๋)์ ๋์์์ด ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ๋์ง๋ง, ๊ฐ ํ์ ๋์ด๋ ๊ณ ์ ๋์ด ์์ต๋๋ค. ๊ฐ ํ์
contain: layout size paint;๋ฅผ ์ ์ฉํ๋ฉด ๊ฐ๋ณ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ์ ์ญ์ ์ธ ๋ฆฌํ๋ก์ฐ๋ฅผ ์ ๋ฐํ์ง ์๊ณ , ํ๋ฉด ๋ฐ์ ํ์ ํ์ธํ ๋์ง ์์ต๋๋ค. - ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ๊ฐ์ ๋ชฉ๋ก์ ๋ง๋ค ๋ ํญ์ ๋ชฉ๋ก ํญ๋ชฉ์ ์์ธก ๊ฐ๋ฅํ ํฌ๊ธฐ๋ฅผ ๋ถ์ฌํ๊ณ ์ด ๊ฒฐํฉ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์ฉํ์ญ์์ค. ์ด ์ ๋ต์ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ ฅํ๋ฉฐ, ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ๊ธฐ๊ธฐ์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
์ ๋ต 2: ๋
๋ฆฝ์ ์ธ ์์ ฏ ๋ฐ ๋ชจ๋ (contain: strict; ๋๋ contain: layout paint size;)
ํ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ข ์ฑํ ์ฐฝ, ์๋ฆผ ํจ๋, ๊ด๊ณ ๋จ์ ๋๋ ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋์ ๊ฐ์ ๋ง์ ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๋ ์์ ฏ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ์ปดํฌ๋ํธ๋ ์์ฃผ ์ ๋ฐ์ดํธ๋ ์ ์์ผ๋ฉฐ ๋ณต์กํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- ๋ฌธ์ ์ : ํ ์์ ฏ ๋ด์ ๋์ ์ ๋ฐ์ดํธ๊ฐ ํ์ด์ง์ ๊ด๋ จ ์๋ ๋ถ๋ถ์์ ๋ ๋๋ง ์์ ์ ์๋์น ์๊ฒ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ํด๊ฒฐ์ฑ
: ์ด๋ฌํ ๋
๋ฆฝ์ ์ธ ์์ ฏ์ ๋ํผ ์์์
contain: strict;๋ฅผ ์ ์ฉํฉ๋๋ค. ํฌ๊ธฐ๊ฐ ์๊ฒฉํ๊ฒ ๊ณ ์ ๋์ง๋ ์์์ง๋ง ์ฌ์ ํ ๋๋ถ๋ถ ๊ฒฉ๋ฆฌ๋์ด ์๋ค๋ฉด,contain: layout paint size;(๋๋ ์ฌ์ง์ด ๊ทธ๋ฅlayout paint;)๊ฐ ๋ ์์ ํ ๋์์ด ๋ ์ ์์ต๋๋ค. - ์๋ ์๋ฆฌ:
contain: strict;(๋๋ ๋ช ์์ ์กฐํฉ)๋ ์ต๊ณ ์์ค์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์์ ฏ์ ๋ธ๋๋ฐ์ค๋ก ์ทจ๊ธํ์ฌ ๊ทธ ๊ฒฝ๊ณ ๋ด์์ ๋ชจ๋ ๋ ๋๋ง ๋จ๊ณ๋ฅผ ์ต์ ํํฉ๋๋ค.- ๋ชจ๋ ๋ด๋ถ ๋ณ๊ฒฝ(๋ ์ด์์, ํ์ธํธ, ์คํ์ผ, ํฌ๊ธฐ)์ ์์ ฏ์ ๋ฒ์ด๋์ง ์๋๋ก ๋ณด์ฅ๋์ด ํ์ด์ง์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ํ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์ค์ฉ์ ์์: ์ฌ๋ฌ ๋
๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ์๊ฐํ ์์ ฏ์ ํน์ง์ผ๋ก ํ๋ ๋์๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์
. ๊ฐ ์์ ฏ์ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ณ ์์ฃผ ์
๋ฐ์ดํธ๋ฉ๋๋ค. ๊ฐ ์์ ฏ์ ์ปจํ
์ด๋์
contain: strict;๋ฅผ ์ ์ฉํ๋ฉด ํ ์ฐจํธ์ ๋น ๋ฅธ ์ ๋ฐ์ดํธ๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ์ฒด ๋์๋ณด๋ ๋ ์ด์์์ด๋ ๋ค๋ฅธ ์ฐจํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๋๋ก ๊ฐ์ ํ์ง ์์ต๋๋ค. - ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ์ ํ๋ฆฌ์ผ์ด์
์์ ์ง์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํ์ญ์์ค. ํ์ ๋ ์กฐ์์ ๋ ์ด์์๊ณผ ์ํธ์์ฉํ๊ฑฐ๋ ์ํฅ์ ์ค ํ์๊ฐ ์๋ ์ปดํฌ๋ํธ๋
strict๋๋ ํฌ๊ด์ ์ธ ๋ค์ค ์ ํ ๊ฒฉ๋ฆฌ์ ์ฃผ์ ํ๋ณด์ ๋๋ค.
์ ๋ต 3: ํ๋ฉด ๋ฐ ๋๋ ์จ๊ฒจ์ง ์ฝํ
์ธ (contain: paint layout;)
๋ง์ ์น ์ธํฐํ์ด์ค์๋ DOM์ ์ผ๋ถ์ด์ง๋ง ํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์๋ ์์๊ฐ ํฌํจ๋ฉ๋๋ค. ์๋ก๋ ํญ ์ธํฐํ์ด์ค์ ๋นํ์ฑ ํญ, ์บ๋ฌ์ ์ ์ฌ๋ผ์ด๋ ๋๋ ํธ๋ฆฌ๊ฑฐ๋ ๋๊น์ง ์จ๊ฒจ์ง ๋ชจ๋ฌ์ด ์์ต๋๋ค.
- ๋ฌธ์ ์ :
display: none;์ ํตํด ์จ๊ฒจ์ ธ ์๋๋ผ๋, display ์์ฑ์ด ํ ๊ธ๋๋ฉด ์ฝํ ์ธ ๊ฐ ์ฌ์ ํ ๋ ์ด์์ ๊ณ์ฐ์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.visibility: hidden;์ด๋ ํ๋ฉด ๋ฐ ์์น ์ง์ ์ ํตํด ์จ๊ฒจ์ง ์ฝํ ์ธ ๋ ์ฌ์ ํ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฉฐ ๋ธ๋ผ์ฐ์ ์ ์ํด ์ ์ ํ ์ปฌ๋ง๋์ง ์์ผ๋ฉด ํ์ธํธ ๋น์ฉ์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. - ํด๊ฒฐ์ฑ
: ๋นํ์ฑ ํญ, ํ๋ฉด ๋ฐ ์บ๋ฌ์
์ฌ๋ผ์ด๋ ๋๋ DOM์ ์กด์ฌํ์ง๋ง ํ์ฌ ๋ณด์ด์ง ์๋ ๋ค๋ฅธ ์์์
contain: paint layout;๋ฅผ ์ ์ฉํฉ๋๋ค. - ์๋ ์๋ฆฌ:
contain: paint;: ๋ธ๋ผ์ฐ์ ๋ ์ด ์์๊ฐ ํ๋ฉด ๋ฐ์ ์๊ฑฐ๋ ์์ ํ ๊ฐ๋ ค์ ธ ์์ผ๋ฉด ๊ทธ ์์ ์ด๋ค ๊ฒ๋ ๊ทธ๋ฆฌ์ง ์์๋ ๋๋ค๋ ๊ฒ์ ์๋๋ค. ์ด๋ DOM์ ์ผ๋ถ์ด์ง๋ง ์ฆ์ ๋ณด์ด์ง ์๋ ์์์ ๋ํ ์ค์ํ ์ต์ ํ์ ๋๋ค.contain: layout;: ์จ๊ฒจ์ง ์์ ๋ด์ ๋ด๋ถ ๋ ์ด์์ ๋ณ๊ฒฝ(์: ๋น๋๊ธฐ์ ์ผ๋ก ์ฝํ ์ธ ๋ก๋)์ด ์๋๋ผ๋, ๋ณด์ด๋ ํ์ด์ง ๋ถ๋ถ์ ๋ฆฌ๋ ์ด์์์ ์ ๋ฐํ์ง ์๋๋ก ํฉ๋๋ค.
- ์ค์ฉ์ ์์: ๊ฐ ๋จ๊ณ๊ฐ ๋ณ๋์ ์ปดํฌ๋ํธ์ด๊ณ ํ ๋ฒ์ ํ๋๋ง ๋ณด์ด๋ ๋ค๋จ๊ณ ์์. ๋นํ์ฑ ๋จ๊ณ ์ปดํฌ๋ํธ์
contain: paint layout;๋ฅผ ์ ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฌํ ์จ๊ฒจ์ง ๋จ๊ณ๋ฅผ ํ์ธํ ํ๊ฑฐ๋ ๋ ์ด์์ํ๋ ๋ฐ ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ์ง ์๋๋ก ํ์ฌ ์ฌ์ฉ์๊ฐ ์์์ ํ์ํ ๋ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. - ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ฃผ ๋ณด์ด๊ฑฐ๋ ์จ๊ฒจ์ง๊ฑฐ๋ ํ๋ฉด ๋ฐ์ผ๋ก ์ด๋ํ๋ ์์๋ฅผ ๊ฒํ ํ์ญ์์ค. ์ด๋ค์ ๋ถํ์ํ ๋ ๋๋ง ์์
์ ์ค์ด๊ธฐ ์ํด
contain: paint layout;๋ฅผ ์ ์ฉํ๊ธฐ์ ์ข์ ํ๋ณด์ ๋๋ค.
์ ๋ต 4: ๊ฐ๋ณ ํ
์คํธ, ๊ณ ์ ์์ ์ฝํ
์ธ (contain: content;)
๋๋ก๋ ๋ด๋ถ ์ฝํ ์ธ (ํนํ ํ ์คํธ)๊ฐ ๋ค์ํ์ฌ ์ปดํฌ๋ํธ์ ์ ์ฒด ๋์ด์ ์ํฅ์ ๋ฏธ์น์ง๋ง, ๋ค๋ฅธ ๋ ๋๋ง ์ธก๋ฉด์ ๊ฒฉ๋ฆฌํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค.
- ๋ฌธ์ ์ : ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋์ด ๋์ด์ ์ํฅ์ ๋ฏธ์น๋ฉด ๋ถ๋ชจ ๋๋ ํ์ ์์์ ๋ํ ๋ ์ด์์ ๊ณ์ฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ธํธ ๋ฐ ์คํ์ผ ์ฌ๊ณ์ฐ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์ด ์ธ๋ถ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ง๊ณ ์ถ์ ์ ์์ต๋๋ค.
- ํด๊ฒฐ์ฑ
:
contain: content;(layout paint style;์ ๋จ์ถํ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์์ ํฌ๊ธฐ๋ ์ฝํ ์ธ ์ ์ํด ๊ฒฐ์ ๋๋ฉด์๋ ๋ ์ด์์, ํ์ธํธ, ์คํ์ผ ํจ๊ณผ๋ ๊ฒฉ๋ฆฌํ ์ ์์ต๋๋ค. - ์๋ ์๋ฆฌ:
contain: layout;: ๋ด๋ถ ๋ ์ด์์ ๋ณ๊ฒฝ(์: ํ ์คํธ ์ค ๋ฐ๊ฟ)์ด ์ธ๋ถ ๋ ์ด์์ ์ด๋์ ์ ๋ฐํ์ง ์์ต๋๋ค.contain: paint;: ํ์ธํ ์ด ๊ฒฉ๋ฆฌ๋์ด ํ์ธํธ ๋ฒ์๋ฅผ ์ค์ ๋๋ค.contain: style;: ๋ด๋ถ์ ์คํ์ผ ๋ณ๊ฒฝ์ ๋ก์ปฌ์ ๋จธ๋ญ ๋๋ค.size๊ฒฉ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก, ๋ช ์์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์ ์ํ์ง ์๊ณ ๋ ์์์ ๋์ด๊ฐ ์ฝํ ์ธ ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์กฐ์ ๋ ์ ์์ต๋๋ค.
- ์ค์ฉ์ ์์: ๊ฐ ๊ธฐ์ฌ ์ค๋ํซ์ด ์ ๋ชฉ, ์ด๋ฏธ์ง, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ์์ ์์ฝ ํ
์คํธ๋ฅผ ๊ฐ๋ ๋ด์ค ํผ๋. ์ค๋ํซ ์นด๋์ ์ ์ฒด ๋๋น๋ ๊ณ ์ ๋์ด ์์ง๋ง ๋์ด๋ ํ
์คํธ์ ๋ฐ๋ผ ์กฐ์ ๋ฉ๋๋ค. ๊ฐ ์ค๋ํซ ์นด๋์
contain: content;๋ฅผ ์ ์ฉํ๋ฉด ๋์ด๊ฐ ์กฐ์ ๋๋ ๋์ ์ ์ฒด ๋ด์ค ํผ๋ ๊ทธ๋ฆฌ๋์ ๋ฆฌํ๋ก์ฐ๋ฅผ ์ ๋ฐํ์ง ์๊ณ , ํ์ธํ ๊ณผ ์คํ์ผ๋ง์ด ์ง์ญํ๋ฉ๋๋ค. - ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ๋์ด์ ์ํฅ์ ์ค ์ ์๋ ๋์ ํ
์คํธ ์ฝํ
์ธ ๋ฅผ ๊ฐ์ง ์ปดํฌ๋ํธ์ด์ง๋ง ๋ค๋ฅธ ๋ ๋๋ง ๊ด๋ จ ์ฌํญ์ ๊ฒฉ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ,
contain: content;๋ ํ๋ฅญํ ๊ท ํ์ ์ ๊ณตํฉ๋๋ค.
์ ๋ต 5: ์คํฌ๋กค ์์ญ ๋ด์ ์ํธ์์ฉ ์์ (contain: layout paint;)
๋ฆฌ์น ํ ์คํธ ํธ์ง๊ธฐ๋ ์ฑํ ๊ธฐ๋ก๊ณผ ๊ฐ์ด ๋๋กญ๋ค์ด, ํดํ ๋๋ ์๋ฒ ๋๋ ๋ฏธ๋์ด ํ๋ ์ด์ด์ ๊ฐ์ ์ํธ์์ฉ ์์๋ฅผ ํฌํจํ ์ ์๋ ๋ณต์กํ ์คํฌ๋กค ์์ญ์ ์๊ฐํด ๋ณด์ญ์์ค.
- ๋ฌธ์ ์ : ์ด๋ฌํ ์์ ๋ด์ ์ํธ์์ฉ์ ์คํฌ๋กค ๊ฐ๋ฅํ ์ปจํ ์ด๋๊น์ง, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ผ๋ก ๊ทธ ์ด์์ผ๋ก ์ ํ๋๋ ๋ ์ด์์ ๋๋ ํ์ธํธ ์์ ์ ์ ๋ฐํ์ฌ ์คํฌ๋กค ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ํด๊ฒฐ์ฑ
: ์คํฌ๋กค ๊ฐ๋ฅํ ์ปจํ
์ด๋ ์์ฒด์
contain: layout paint;๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ ๋๋ง ๊ด๋ จ ์ฌํญ์ ์ด ํน์ ์์ญ์ผ๋ก ์ ํํ๋๋ก ์ง์ํฉ๋๋ค. - ์๋ ์๋ฆฌ:
contain: layout;: ์คํฌ๋กค ์์ญ ๋ด์ ๋ชจ๋ ๋ ์ด์์ ๋ณ๊ฒฝ(์: ๋๋กญ๋ค์ด ์ด๊ธฐ, ์๋ฒ ๋๋ ๋น๋์ค ํฌ๊ธฐ ์กฐ์ )์ ํด๋น ์์ญ์ ๊ตญํ๋์ด ๋น์ฉ์ด ๋ง์ด ๋๋ ์ ์ฒด ํ์ด์ง ๋ฆฌํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.contain: paint;: ์ํธ์์ฉ์ ์ํด ์ ๋ฐ๋๋ ํ์ธํธ ์์ (์: ์์ ์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ํดํ ํ์)๋ ์ง์ญํ๋์ด ๋ ๋ถ๋๋ฌ์ด ์คํฌ๋กค์ ๊ธฐ์ฌํฉ๋๋ค.
- ์ค์ฉ์ ์์: ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์ ์ ์ ์ํธ์์ฉ ์ปดํฌ๋ํธ๋ฅผ ์ฝ์
ํ ์ ์๋ ์จ๋ผ์ธ ๋ฌธ์ ํธ์ง๊ธฐ. ์ฃผ ํธ์ง ๊ฐ๋ฅํ ์บ๋ฒ์ค์
contain: layout paint;๋ฅผ ์ ์ฉํ๋ฉด ์๋ฒ ๋๋ ์ปดํฌ๋ํธ ๋ด์ ๋ณต์กํ ์ํธ์์ฉ์ด๋ ๋์ ์ฝํ ์ธ ๊ฐ ํธ์ง๊ธฐ๋ ์ฃผ๋ณ UI์ ์ ๋ฐ์ ์ธ ๋ฐ์์ฑ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํฉ๋๋ค. - ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ: ๋ณต์กํ๊ณ ์ํธ์์ฉ์ด ๋ง์ผ๋ฉฐ ์คํฌ๋กค ๊ฐ๋ฅํ ์์ญ์ ๊ฒฝ์ฐ,
layout๊ณผpaint๊ฒฉ๋ฆฌ๋ฅผ ๊ฒฐํฉํ๋ฉด ์ํธ์์ฉ ๋ฐ ์คํฌ๋กค ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ๋ฐฐํฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์ค์ ๊ณ ๋ ค ์ฌํญ
CSS ๊ฒฉ๋ฆฌ๋ ์์ฒญ๋ ์ฑ๋ฅ ์ด์ ์ ์ ๊ณตํ์ง๋ง ๋ง๋ณํต์น์ฝ์ ์๋๋๋ค. ํนํ ๋ค์ํ ๊ธฐ๊ธฐ ์ฑ๋ฅ๊ณผ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ฐ์ง ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ๋๋ ์๋ํ์ง ์์ ๋ถ์์ฉ์ ํผํ๊ธฐ ์ํด ์ ์คํ ์ ์ฉ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก ์ค์๊ฐ ํ์์ ์ ๋๋ค.
1. ์ถ์ธกํ์ง ๋ง๊ณ ์ธก์ ํ๋ผ (๊ธ๋ก๋ฒ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง)
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ ์ฉํ๊ธฐ ์ ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ๋ ํ์ฌ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๊ฒ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ(Chrome DevTools์ Performance ํญ, Lighthouse ๊ฐ์ฌ, ๋๋ WebPageTest ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ญ์์ค. ๊ธด ๋ ์ด์์ ๋ฐ ํ์ธํธ ์๊ฐ์ ์ฐพ์ผ์ญ์์ค. ๊ฒฉ๋ฆฌ๋ ์ด๋ฌํ ๋น์ฉ์ด ์ค์ ๋ก ๋์ ๊ณณ์ ์ ์ฉ๋์ด์ผ ํฉ๋๋ค. ์ถ์ธก์ ํ์ ์๋ ๊ณณ์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์ฉํ๊ฒ ํ์ฌ, ์ฑ๋ฅ ํฅ์์ ๊ฑฐ์ ์์ด ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP), ์ต์ด ์ ๋ ฅ ์ง์ฐ(FID), ๋์ ๋ ์ด์์ ์ด๋(CLS)๊ณผ ๊ฐ์ ์ฑ๋ฅ ์งํ๋ ๋ณดํธ์ ์ผ๋ก ์ค์ํ๋ฉฐ, ๊ฒฉ๋ฆฌ๋ ์ด๋ค ๋ชจ๋์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
2. ์ํฅ์ ์ดํดํ๋ผ (์ฅ๋จ์ )
๊ฐ ๊ฒฉ๋ฆฌ ์ ํ์๋ ์ฅ๋จ์ ์ด ๋ฐ๋ฆ
๋๋ค. contain: size;๋ ํฌ๊ธฐ๋ฅผ ๋ช
์์ ์ผ๋ก ์ง์ ํด์ผ ํ๋ฉฐ, ์ด๋ ์ง์ ์ผ๋ก ์ ๋์ ์ธ ๋ ์ด์์์์๋ ํญ์ ๊ฐ๋ฅํ๊ฑฐ๋ ๋ฐ๋์งํ์ง ์์ ์ ์์ต๋๋ค. ๋์์ธ ๋ชฉ์ ์ผ๋ก ์ฝํ
์ธ ๊ฐ ๋์ณ์ผ ํ๋ ๊ฒฝ์ฐ, contain: paint;๋ ์ด๋ฅผ ์๋ผ๋ผ ๊ฒ์
๋๋ค. ํญ์ ์ด๋ฌํ ์ํฅ์ ์ธ์งํ๊ณ ๋ค์ํ ๋ทฐํฌํธ์ ์ฝํ
์ธ ๋ณํ์ ๋ํด ์ฒ ์ ํ ํ
์คํธํ์ญ์์ค. ํ ์ง์ญ์ ๊ณ ํด์๋ ๋ชจ๋ํฐ์์ ์๋ํ๋ ์๋ฃจ์
์ด ๋ค๋ฅธ ์ง์ญ์ ์์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ์๊ฐ์ ์ผ๋ก ์คํจํ ์ ์์ต๋๋ค.
3. ์๊ฒ ์์ํ๊ณ ๋ฐ๋ณตํ๋ผ
ํ์ด์ง์ ๋ชจ๋ ์์์ contain: strict;๋ฅผ ์ ์ฉํ์ง ๋ง์ญ์์ค. ์๋ ค์ง ๋ฌธ์ ์์ญ(ํฐ ๋ชฉ๋ก, ๋ณต์กํ ์์ ฏ ๋๋ ์์ฃผ ์
๋ฐ์ดํธ๋๋ ์ปดํฌ๋ํธ)๋ถํฐ ์์ํ์ญ์์ค. ๋จผ์ ๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ๊ฒฉ๋ฆฌ ์ ํ(์: layout ๋๋ paint๋ง)์ ์ ์ฉํ ๋ค์, ํ์์ ๋ฐ๋ผ ๊ฒฐํฉํ๋ฉด์ ๊ฐ ๋จ๊ณ์ ์ํฅ์ ์ธก์ ํ์ญ์์ค. ์ด ๋ฐ๋ณต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ์ ๋ต์ ์ฐพ์๋ด๊ณ ๊ณผ๋ํ ์ต์ ํ๋ฅผ ํผํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
4. ์ ๊ทผ์ฑ ๊ณ ๋ ค ์ฌํญ
๊ฒฉ๋ฆฌ๊ฐ ์ ๊ทผ์ฑ ๊ธฐ๋ฅ๊ณผ ์ด๋ป๊ฒ ์ํธ์์ฉํ ์ ์๋์ง ์ ์ํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์๊ฐ์ ์ผ๋ก๋ ํ๋ฉด ๋ฐ์ ์์ง๋ง ์คํฌ๋ฆฐ ๋ฆฌ๋์๊ฒ๋ ์ฌ์ ํ ์ ๊ทผ ๊ฐ๋ฅํด์ผ ํ๋ ์์์ contain: paint;๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํด๋น ์ฝํ
์ธ ๊ฐ ์ ๊ทผ์ฑ ํธ๋ฆฌ์ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํ์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฒฉ๋ฆฌ ์์ฑ์ ์ฃผ๋ก ๋ ๋๋ง ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ฉฐ ์๋งจํฑ HTML์ด๋ ARIA ์์ฑ๊ณผ ์ง์ ์ ์ผ๋ก ๊ฐ์ญํ์ง๋ ์์ง๋ง, ํญ์ ์ ๊ทผ์ฑ ๊ฐ์ฌ๋ฅผ ์ํํ๋ ๊ฒ์ด ํ๋ช
ํฉ๋๋ค.
5. ๋ธ๋ผ์ฐ์ ์ง์ ๋ฐ ์ ์ง์ ํฅ์
contain์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ ์ง์๋์ง๋ง(caniuse.com ํ์ธ), ์ด๋ฅผ ์ ์ง์ ํฅ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ํต์ฌ ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅธ ๋ ๋๋ง์ ์ํด ๊ฒฉ๋ฆฌ์๋ง ์์กดํด์๋ ์ ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ contain์ ์ง์ํ์ง ์๋๋ผ๋ ํ์ด์ง๋ ์ฌ์ ํ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํด์ผ ํ๋ฉฐ, ์ฑ๋ฅ์ด ๋ค์ ์ ํ๋ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๊ฒฌ๊ณ ํ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
6. ๊ฒฉ๋ฆฌ ๋ฌธ์ ๋๋ฒ๊น
contain์ ์ ์ฉํ ํ ์ฝํ
์ธ ์๋ฆผ์ด๋ ์๋ชป๋ ๋ ์ด์์๊ณผ ๊ฐ์ ์๊ธฐ์น ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ฒ๊น
ํ์ญ์์ค:
- ์์ ๊ฒ์ฌ: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฉ๋ฆฌ๋ ์์์ ๊ทธ ๋ถ๋ชจ์ ๊ณ์ฐ๋ ์คํ์ผ์ ํ์ธํ์ญ์์ค.
- ์์ฑ ํ ๊ธ: ์ด๋ค ํน์ ์์ฑ์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋์ง ํ์ธํ๊ธฐ ์ํด
contain๊ฐ(์:size๋๋paint์ ๊ฑฐ)์ ํ๋์ฉ ์ผ์์ ์ผ๋ก ๋นํ์ฑํํด ๋ณด์ญ์์ค. - ๋์นจ ํ์ธ: ์ปจํ ์ด๋๋ฅผ ์๊ฐ์ ์ผ๋ก ๋์น๋ ์์๋ฅผ ์ฐพ์ผ์ญ์์ค.
- ํฌ๊ธฐ ๊ฒํ :
contain: size;(๋๋strict)๊ฐ ์ ์ฉ๋ ์์๊ฐ ๋ช ์์ ์ด๊ฑฐ๋ ๊ณ ์ ํ๊ฒ ์ ์๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ์ญ์์ค. - ์ฑ๋ฅ ๋ชจ๋ํฐ: ๋ณ๊ฒฝ ์ฌํญ์ด ์ค์ ๋ก ๋ ์ด์์ ๋ฐ ํ์ธํธ ์๊ฐ์ ์ํ๋ ํจ๊ณผ๋ฅผ ์ฃผ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฑ๋ฅ ๋ชจ๋ํฐ๋ฅผ ๊ณ์ ์ด์ด๋์ญ์์ค.
์ค์ ์ํฅ๊ณผ ๊ธ๋ก๋ฒ ๊ด๋ จ์ฑ
CSS ๊ฒฉ๋ฆฌ์ ์ ๋ต์ ์ ์ฉ์ ๋จ์ํ ๋ฐ๋ฆฌ์ด๋ฅผ ์ค์ด๋ ๊ฒ ์ด์์ ๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ์ฐ์ํ๊ณ ๊ณตํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ณ ์ ์ธํฐ๋ท์ด๋ ๊ฐ๋ ฅํ ์ปดํจํ ๊ธฐ๊ธฐ์ ๋ํ ์ ๊ทผ์ฑ์ด ๋ฎ์ ์ง์ญ์์๋ CSS ๊ฒฉ๋ฆฌ์ ๊ฐ์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ค์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐจ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. CPU ๋ฐ GPU ์์ ๋ถํ๋ฅผ ์ค์์ผ๋ก์จ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์์ํค๊ณ , ๊ตฌํ ํ๋์จ์ด์์ ์ฌ์ดํธ๋ฅผ ๋ ๋ฐ์์ ์ผ๋ก ๋ง๋ค๋ฉฐ, ๋ณ๋์ด ์ฌํ ๋คํธ์ํฌ ์กฐ๊ฑด์์๋ ๋ ๋ถ๋๋ฌ์ด ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ ๋์ ์ฌ์ฉ์ ์ฐธ์ฌ, ๋ฎ์ ์ดํ๋ฅ , ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์๋น์ค์ ๋ํ ๋ ๋์ ๊ณ ๊ฐ ๋๋ฌ ๋ฒ์๋ก ์ง์ ์ด์ด์ง๋๋ค.
๋ํ ํ๊ฒฝ์ ๊ด์ ์์ ๋ณผ ๋, ๋ ํจ์จ์ ์ธ ๋ ๋๋ง์ ๋ ์ ์ ๊ณ์ฐ ๋ฅ๋ ฅ ์๋ชจ๋ก ์ด์ด์ ธ ๋ ์นํ๊ฒฝ์ ์ธ ์น์ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ฌํ ๊ธ๋ก๋ฒ ์ฑ ์์ ๊ธฐ์ ์ฐ์ ์์ ์ ์ ๋ ์ธ์๋๊ณ ์์ผ๋ฉฐ, ํจ์จ์ ์ธ CSS๋ ๊ทธ ํด๊ฒฐ์ฑ ์ ์ผ๋ถ์ ๋๋ค.
๊ฒฐ๋ก : ๊ฒฉ๋ฆฌ๋ ๋์์ธ์ ํ์ ๋ฐ์๋ค์ด์ธ์
CSS ๊ฒฉ๋ฆฌ๋, ํนํ ๋ค์ค ์ ํ ์ ๋ต์ ํ์ฉํ ๋, ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํ ํ๋ ์น ๊ฐ๋ฐ์์ ํ์ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด UI์ ๊ตฌ์กฐ์ ๋ ๋ฆฝ์ฑ์ ๋ธ๋ผ์ฐ์ ์ ๋ช ์์ ์ผ๋ก ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ํ๋ ๋ณต์กํ ์๋ฐ์คํฌ๋ฆฝํธ ํด๊ฒฐ์ฑ ์ด๋ ์ ์คํ ์๋ DOM ์กฐ์์ ํตํด์๋ง ๊ฐ๋ฅํ๋ ์ง๋ฅ์ ์ธ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ชฉ๋ก์์๋ถํฐ ๋
๋ฆฝ์ ์ธ ์์ ฏ, ํ๋ฉด ๋ฐ ์ฝํ
์ธ ์ ์ด๋ฅด๊ธฐ๊น์ง, layout, paint, size, style ๊ฒฉ๋ฆฌ๋ฅผ ์ ๋ต์ ์ผ๋ก ๊ฒฐํฉํ๋ ๋ฅ๋ ฅ์ ๊ณ ์ฑ๋ฅ, ๋ฐ์์ฑ, ์์ ํจ์จ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ์๋จ์ ์ ๊ณตํฉ๋๋ค. ์น์ด ๊ณ์ ๋ฐ์ ํ๊ณ ์๋์ ๋ถ๋๋ฌ์์ ๋ํ ์ฌ์ฉ์ ๊ธฐ๋๊ฐ ๋์์ง์ ๋ฐ๋ผ, CSS ๊ฒฉ๋ฆฌ๋ฅผ ๋ง์คํฐํ๋ ๊ฒ์ ์์ฌํ ์ฌ์ง์์ด ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ๋ฅผ ์ฐจ๋ณํํ์ฌ ๋ชจ๋ ๊ณณ์ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ์ ์ฐํ ๊ฒฝํ์ ๋ณด์ฅํ ๊ฒ์
๋๋ค.
์ค๋๋ถํฐ ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ์์ contain์ ์คํํด ๋ณด์ธ์. ์ํฅ์ ์ธก์ ํ๊ณ , ๋ฐ๋ณตํ๋ฉฐ, ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๋ ๋์ ์ฑ๋ฅ์ ์น ๊ฒฝํ์ ์ด์ ์ ๋๋ฆฌ์ญ์์ค. ์ฌ๋ฌ๋ถ์ ์ฌ์ฉ์๋ค๊ณผ ๊ทธ๋ค์ ๊ธฐ๊ธฐ๊ฐ ๊ฐ์ฌํ ๊ฒ์
๋๋ค.